#include "sg90.h"

void Tim_CommonTim_Config(void)
{
//	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
//	TIM_OCInitTypeDef  TIM_OCInitStruct;
	GPIO_InitTypeDef  GPIO_InitStruct;
	
	//1?????-----GPIOB,AFIO,TIM4
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);

	//GPIO_InitStruct.GPIO_Mode		= GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Mode		= GPIO_Mode_Out_PP;
	
	GPIO_InitStruct.GPIO_Pin		= GPIO_Pin_8;
	GPIO_InitStruct.GPIO_Speed		= GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	
	//4???????3
//	TIM_TimeBaseInitStruct.TIM_ClockDivision 	= TIM_CKD_DIV4;//????:2??
//	TIM_TimeBaseInitStruct.TIM_CounterMode 		= TIM_CounterMode_Up ;//????:??
//	TIM_TimeBaseInitStruct.TIM_Period 			= 200;//ARR
//	TIM_TimeBaseInitStruct.TIM_Prescaler 		= 7200;//????:7200
//	TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStruct);

//	//5????????:
//	TIM_OCInitStruct.TIM_OutputState 			= TIM_OutputState_Enable;
//	TIM_OCInitStruct.TIM_OCMode 	 			= TIM_OCMode_PWM1;//??:PWM1
//	TIM_OCInitStruct.TIM_OCPolarity  			= TIM_OCPolarity_High;//-????:???
//	TIM_OCInitStruct.TIM_Pulse 		 			= 0;//CCR:0
//	
//	TIM_OC3Init(TIM4, &TIM_OCInitStruct);
//	// 6???ARR???????
//	TIM_ARRPreloadConfig(TIM4, ENABLE);
//	//7?????3???????
//	TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);
//	TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
//	//8???TIM4
//	TIM_Cmd(TIM4, ENABLE);
	
}
void TIM4_SetCompareValue(uint8_t value)
{
	TIM_SetCompare3(TIM4,value);
}

void PB12_init(void)
{
	GPIO_InitTypeDef  GPIO_InitStruct;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);


//	GPIO_InitStruct.GPIO_Mode		= GPIO_Mode_AF_PP;
	GPIO_InitStruct.GPIO_Mode		= GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin		= GPIO_Pin_12;
	GPIO_InitStruct.GPIO_Speed		= GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStruct);
	
	
	
}

void DoorOpen(void)
{
	GPIO_SetBits(GPIOB,GPIO_Pin_12);
	
}

void DoorClose(void)
{
	GPIO_ResetBits(GPIOB,GPIO_Pin_12);
	
}

void DoorToggle(void)
{
	if(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12))
	{
		GPIO_ResetBits(GPIOB,GPIO_Pin_12);
	}else
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_12);
	}
}

